﻿using PauloC.DAL;
using PauloC.DTO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PauloC.BLL
{
    public class PostagemBLL
    {
        Context dbContext = new Context();
        //public ICollection<PostagemDTO> Buscar()
        //{
        
        //}
        public PostagemDTO  Buscar(int id)
        {
            PostagemDB postagemDB = dbContext.Postagem.First(x => x.Id == id);
            return ConverterParaDTO(postagemDB);
        }

        public PostagemDTO Inserir(PostagemDTO postagemDTO)
        {
            PostagemDB postagemDB = ConverterParaDB(postagemDTO);
            dbContext.Postagem.Add(postagemDB);
            dbContext.SaveChanges();
            return ConverterParaDTO(postagemDB);
        }
  
        public void Excluir(int id)
        {
            PostagemDB postagemDB = dbContext.Postagem.First(x => x.Id == id);
            dbContext.Postagem.Remove(postagemDB);
            dbContext.SaveChanges();
        }

        public void Atualizar(PostagemDTO postagemDTO)
        {
            PostagemDB postagemDB = dbContext.Postagem.First(x => x.Id == postagemDTO.Id);
            postagemDB.Categoria.Id = postagemDTO.Categoria.Id;
            postagemDB.Imagem = postagemDTO.Imagem;
            postagemDB.Texto = postagemDTO.Texto;
            postagemDB.Titulo = postagemDTO.Titulo;
            postagemDB.Usuario.Id = postagemDTO.Usuario.Id;
            dbContext.SaveChanges();
        }

        public List<PostagemDTO> Listar()
        {
            List<PostagemDTO> list = new List<PostagemDTO>();
            foreach (var item in dbContext.Postagem.ToList())
            {
                list.Add(ConverterParaDTO(item));
            }
            return list;
        }

        public PostagemDTO ConverterParaDTO(PostagemDB postagemDB)
        {
            PostagemDTO postagemDTO = new PostagemDTO();
            postagemDTO.Id = postagemDB.Id;
            postagemDTO.Categoria = new CategoriaBLL().ConverterParaDTO(postagemDB.Categoria);
            postagemDTO.Imagem = postagemDB.Imagem;
            postagemDTO.Texto = postagemDB.Texto;
            postagemDTO.Titulo = postagemDB.Titulo;
            postagemDTO.Usuario = new UsuarioBLL().ConverterParaDTO(postagemDB.Usuario);
            return postagemDTO;
        }

        public PostagemDB ConverterParaDB(PostagemDTO postagemDTO)
        {
            PostagemDB postagemDB = new PostagemDB();
            postagemDB.Id = postagemDTO.Id;
            postagemDB.Categoria.Id = postagemDTO.Categoria.Id;
            postagemDB.Imagem = postagemDTO.Imagem;
            postagemDB.Texto = postagemDTO.Texto;
            postagemDB.Titulo = postagemDTO.Titulo;
            postagemDB.Usuario.Id = postagemDTO.Usuario.Id;
            return postagemDB;
        }
    }
}
